namespace OasisCiq.Xal
{
    using System.Collections.Specialized;
    using CommonTypes;
    using External;
    using XS;

    /// <summary>
    /// Complex type for internal reuse
    /// </summary>
    public class IdentifierType : CTString, IAbbreviationGroup, IExtendedAttributes
    {
        public IdentifierType(string value)
            : base(value)
        {
        }

        /// <summary>
        /// Indicates which part of number or identifier this element contains.
        /// Some "numbers" are as simple as 42 and some "numbers" are more like complex
        /// aplhanumberic identifiers as Postcodes in UK or Canada, e.g. M2H 2S5.
        /// It may be necessary to separate the "number" into sub-elements and indicate what
        /// type of information each of them contains.
        /// </summary>
        public virtual IdentifierElementTypeList Type { get; set; }

        public virtual XSBoolean Abbreviation { get; set; }

        public virtual NameValueCollection ExtendedAttributes { get; set; }
    }
}